home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 26.zip / BS1 part 26 / Aztec C v5.2a disk 2.adf / cc52.lzh / changes.cc < prev   
C/C++ Source or Header  |  1991-10-03  |  9KB  |  278 lines

  1. COMPILER CHANGES
  2.  
  3. 1/?/91    ms
  4.     Code generated for resident library function having no arguments wasn't
  5.     pushing A4.
  6.  
  7.  
  8. 1/25/91    jd
  9.     Changed compiler so that A6 is always preserved on function entry and exit,
  10.     when it's used by the function, even when using -R6 option.
  11.  
  12. 1/28/91    jd
  13.     When using compiler's -SN option, code generated for resident 
  14.     library functions pushed and popped in different order.
  15.  
  16. 1/29/91 kh
  17.     Compiler required prototype to appear before a regcall pragma.
  18.  
  19. 2/1/91 kh, jd
  20.     Added code to allow regcall, etc functions to define return reg
  21.  
  22. 2/1/91 jd
  23.     Added code to allow pascal function that has args to return value in a0
  24.  
  25. 2/4/91 jd
  26.     Changed compiler to not preserve return register for regcall etc functions
  27.  
  28.  
  29. 2/5/91 jd
  30.     When function whose args are in registers was compiled with -SN, 
  31.     a return statement in the function confused compiler's notion of where
  32.     things were on the stack.
  33.  
  34. 2/5/91 jd
  35.     Fixed code for libcall pragma to handle return reg
  36.  
  37. 2/11/91 jd
  38.     added code to verify that function arguments agree in pragmas and
  39.     prototypes.
  40.  
  41. 2/16/91 jd
  42.     Incorporated changes for mac and 68k/rom.
  43.  
  44. 2/21/91 jd
  45.     When writing unnamed structure to precompiled header file, compiler
  46.     wasn't leaving room for structure's null termination of name.
  47.  
  48. 2/26/91 SCR 1: jd
  49.     For the following function declaration:
  50.         enum color f(){};
  51.     the -qp compiler option generated the wrong prototype:
  52.         int f(void);
  53.  
  54. 3/1/91 SCR 2: jd
  55.     libcall pragma didn't accept more than 6 args, but some toolbox calls
  56.     take more than 6 (e.g. BltBitMap)
  57.  
  58. 3/7/91 SCR 4: jd
  59.     making assignment of two function types having different number of args
  60.     caused strange results (e.g. enforcer hits)
  61.  
  62. 3/7/91 SCR 5: jd
  63.     when compiled w/ -f8, bad code generated for:
  64.         register double x;
  65.         x = 1-x;
  66.  
  67. 3/7/91 SCR 6: jd
  68.     for cross to amiga, precompiled headers didn't handle resident library
  69.     basenames correctly.
  70.  
  71. 3/13/91 SCR 7: jd
  72.     changes made for specifying func return reg didn't allow for no args
  73.  
  74. 3/15/91 SCR 8: jd
  75.     for cross to amiga, couldn't use -R6 option 
  76.  
  77. 3/17/91 SCR 9: jd
  78.     call of registerized function that takes an argument in the 
  79.     frame or data pointer register by a function destroys that register
  80.     for accessing data.
  81.     soln: don't allow registerized functions that use those registers;
  82.     for the amiga functions that use those registers, make them call glue
  83.     routines.
  84.  
  85. 3/20/91 SCR 10: jd
  86.     when compiled with -SN, code generated for h(register int i){...}
  87.     accesses i from wrong spot on stack.
  88.  
  89. 3/20/91 SCR 11: jd
  90.     bad code generated for "regvar %= 10" when compiled for 020
  91.  
  92. 3/21/91 SCR 12: jd
  93.     bad code generated for assignments to bit fields when compiled for 020
  94.  
  95. 3/22/91 SCR 13: jd
  96.     bad code generated for 'if ("");'
  97.  
  98. 3/22/91 SCR 14: jd
  99.     functions that use doubles and that are compiled with -SN access args
  100.     at wrong offset.
  101.  
  102. 3/25/91 SCR 15: jd
  103.     bad code generated for %%arg in #asm block if #asm comes before
  104.     first executable statement in a function. soln: generate error msg
  105.  
  106. 3/26/91 SCR 16: jd
  107.     when using pre-compiled header files, comparison of #include file name
  108.     to names in the pre-compiled file should be case-insensitive, otherwise
  109.     the file can be included twice, once from pre-compiled file, once from
  110.     #include statement.
  111.  
  112. 4/1/91 SCR 17: jd
  113.     added -mp option to prevent padding of structures that contain only
  114.     chars. prevents alignment of such structures when in other structures, too.
  115.     this is for lattice compatibility.
  116.  
  117. 4/4/91 SCR 18: jd
  118.     (1) Bad code generated for:
  119.          unsigned long ul=-1;
  120.          double d;
  121.          d = ul;
  122.         Soln required adding the following new internal math routines:
  123.          .Xflu to m881/xflt68.a68, mx_ieee/xflt68.a68
  124.          .Pflu to mx_ieee/flt68.a68, ma_ieee/pflt.a68
  125.          .Fflu to mx_ieee/floats.a68, ma_ieee/floats.a68, ffp/fflt.a68
  126.  
  127.     (2) When generating code for 68881 (-f8 option), incorrect code 
  128.         generated for:
  129.          ul = d;
  130.         68881's "fmove.l fp0,d0" inst only handles signed longs.
  131.         Soln required adding the following new internal math routines:
  132.          .Xfxu to m881/xflt68.a68
  133.  
  134. 4/4/91 SCR 19: jd
  135.     dumping node containing float CONST sometimes corrupted stack
  136.     (dump.c)
  137.  
  138. 4/4/91 SCR 20: jd
  139.     d ends up with a negative number:
  140.         double d;
  141.         d = 0x80000000;
  142.  
  143. 4/16/91 SCR 21: jd
  144.     changed compiler so that keywords are allowed in #if's, except when
  145.     doing strict ansi (-pa). This allows things like #if sizeof(int)==2 ...
  146.  
  147. 4/17/91 SCR 22: jd
  148.     When -MM option puts vars in code segment, compiler allowed assignments
  149.     to such vars, but the assembler wouldn't assemble it, even when using
  150.     large code memory model. 
  151.      Changed compiler so that vars that -MM forces into code segment are 
  152.     treated as const. This allows compiler to issue an error message about 
  153.     assignments to such vars.
  154.      Assembler also needs to be changed to allow assignments to vars in code
  155.     segment, by selecting absolute addressing mode for the variable instead
  156.     of pc-relative.
  157.  
  158. 4/17/91 SCR 23: jd
  159.     When a comment was exactly as long as the compiler's read buffer, and
  160.     was on the last line of a file, and the line wasn't terminated by newline,
  161.     the compiler would report an unterminated comment.
  162.  
  163. 4/18/91 SCR 24: jd
  164.     When long double declaration appears before first function and module is
  165.     compiled with -f8, compile generates incorrect size for variable (8 instead
  166.     of 12).
  167.  
  168. 4/19/91 SCR 25: jd
  169.     When comparing two function prototypes, compiler didn't allow one func's
  170.     "void *" arg to match other's non-"void *" arg. That is,
  171.         void f(void *), (*fp)(long *);
  172.         fp = f;
  173.     generated ptr-to-ptr conversion error. Same error for qsort's comparison
  174.     function.
  175.  
  176. 4/23/91 SCR 26: jd
  177.     Wrong error message "error 40: internal error" generated when assigning
  178.     a non-constant initializer to a field needing a constant initializer.
  179.     Changed to "error 41: invalid initializer"
  180.  
  181. 4/24/91 SCR 27: jd
  182.     "Expression too complex" error message incorrectly generated after code
  183.     generator walked expression trees in the wrong order.
  184.  
  185. 4/25/91 SCR 28: jd
  186.     Compiler using one field in the expression tree structure for multiple
  187.     purposes, causing the compiler to generate non-optimal code for an 
  188.     expression.
  189.  
  190. 4/25/91 SCR 29: jd
  191.     -MR option didn't affect 68881 register usage. Made it use FP3 for
  192.     temporaries.
  193.  
  194. 4/25/91 SCR 30: jd
  195.     Modified compiler so that it detects error 168 ("can't registerize double
  196.     argument") to the declaration of the
  197.     function's prototype or pragma, not when the function is called.
  198.  
  199. 4/25/91 SCR 31: jd
  200.     Compiler didn't report an error when declaring a struct as argument to
  201.     regcall-type function, just generated incorrect code.
  202.  
  203. 4/26/91 SCR 32: jd
  204.     Compiler didn't report an error for regcall-type function that returns
  205.     double or struct.
  206.     Added error 172 for this error.
  207.  
  208. 5/6/91 SCR 33: jd
  209.     compiler didn't report an error when redefining an enum member. e.g.
  210.     no error on
  211.         enum {a};
  212.         enum {a=42};
  213.  
  214. 5/6/91 SCR 34: jd
  215.     when computing the type of a conditional expr, compiler didn't 'or'
  216.     in the type qualifiers of the left and right operands, when both
  217.     operands were pointers. e.g. no error was reported on
  218.         char *cp; const char *ccp; int i;
  219.         *(i?cp:ccp)=0;
  220.  
  221. 5/7/91 SCR 35: jd
  222.     for a conditional expr whose left and right operands were pointers,
  223.     compiler didn't check that they were to compatible types. e.g. no error on
  224.         char *cp; int *ip, i; void *vp;
  225.         vp=i?cp:ip;
  226.  
  227. 5/7/91 SCR 36: jd
  228.     under ansi, two pointers that are subtracted must be of compatible types.
  229.     the compiler only requires that they be pointers to the same sized object.
  230.     changed compiler to issue error msg if ansi is in effect and if pointers
  231.     aren't to compatible types; if not ansi, no change.
  232.  
  233. 5/8/91 SCR 37: jd
  234.     compiler got enforcer hit when an invalid expression was parenthesized.
  235.  
  236. 5/8/91 SCR 38: jd
  237.     compiler considered pointers to two different structures to be compatible,
  238.     if they had different type qualifiers. e.g. no error reported for
  239.         struct s1 {int v1;} s1; const struct s2 {char v2;} s2; int i; void *vp;
  240.         vp = i? &s1 : &s2;
  241.  
  242. 5/8/91 SCR 39: jd
  243.     if condition of conditional expr was a constant, compiler returned the
  244.     left or right side unchanged, without 'or'ing in the other side's type
  245.     modifiers.
  246.  
  247. -----------------------
  248. 5/13/91 SCR 40: jd
  249.     apparently c++ front ends can create declarations for static functions 
  250.     which are never defined. the compiler always reported this as an error.
  251.     changed the compiler to report this as a warning, not an error, and to
  252.     by default not issue a message. also added a new -wf option to enable 
  253.     this warning, and made the -wl option enable this warning.
  254.  
  255. 5/16/91: SCR 41 jd
  256.     incorrect value used inside compiler for size of __VERSION's 
  257.     macro structure.
  258.  
  259. 6/10/91: SCR 42 jd
  260.     for 8086 host, floating point constants need to be reversed
  261.  
  262. 6/11/91: SCR 43 jd
  263.     c86 doesn't support long doubles yet, so make change to fltext68.c for cross
  264.  
  265. 6/12/91: SCR 44 jd
  266.     pre- and post-inc of float value don't work on pc cross
  267.  
  268. 6/12/91: SCR 45 jd
  269.     don't user more than eight chars in compiler source file names, for pc
  270.     compatibility
  271.  
  272. 7/16/91: SCR 46 jd
  273.     for registerized function having return reg equal to arg reg, bad
  274.     code is generated when moving return value into D0
  275.  
  276. 9/25/91: SCR 47    jd
  277.     add -wc option to disable ptr/ptr warning for (char *) <-> (uchar *)
  278.